package com.forekenow.Demo14;

import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * JDBC：Java中链接数据库的一种技术
 * JDBC的操作流程☠：
 *1.加载驱动
 * 2.获取连接
 * 3，获取到PreparedStatement用于动态执行SQL
 * 4.查询：executeQuery（）   增删改：executeUpdate（）----DML
 * 5，关闭资源
 */
public class JDBCUtil {
    public static void main(String[] args) {
        try {
            //1.加载驱动    jdbc驱动类：com.mysql.jdbc.Driver 8.0改成com.mysql.cj.jdbc.Driver
            Class.forName("com.mysql.jdbc.Driver");
            //2.获取连接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/basic5?useSSL=false&useUnicode=true&characterEncoding=utf-8",
                    "root","root");
            //3.获取Statement对象·作用执行SQL操作
            //Statement createStatement（用于执行静态 SQL 语句并返回它所生成结果的对象） 创建一个Statement对象来将SQL语句发送到数据库
            Statement stmt = conn.createStatement();
            //ResultSet executeQuery(String sql) 执行给定的 SQL 语句，该语句返回单个 ResultSet 对象。
            // int executeUpdate(String sql)  执行给定 SQL 语句，该语句可能为 INSERT、UPDATE 或 DELETE 语句，或者不返回任何内容的 SQL 语句（如 SQL DDL 语句)
            //ResultSet结果集  保存查询结果
            ResultSet rs = stmt.executeQuery("select  * from guestbook ");
            List<GuestBook> list = new ArrayList<>();
            while (rs.next()){
                //将从结果集中获取到的数据保存到对象中
                GuestBook gb = new GuestBook();
                gb.setId(rs.getInt("id"));
                gb.setName(rs.getString("name"));
                gb.setPhone(rs.getString("phone"));
                gb.setEmail(rs.getString("email"));
                gb.setTitle(rs.getString("title"));
                gb.setContent(rs.getString("content"));
                //将对象保存到List集合中
                list.add(gb);
            }
//            //删除
//            int i = stmt.executeUpdate("delete from guestbook where id = 2");
//            System.out.println(i);
//            //关闭资源
////            rs.close();
//            stmt.close();
//            conn.close();

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
